package main

import (
	"context"
	"fmt"
	"time"
	"os"
	"strconv"
)

func main() {
	n, _ := strconv.Atoi(os.Args[1])  // 把第一个参数转成整数，忽略错误
	d := time.Now().Add(50 * time.Millisecond)  // 50毫秒后过期
	ctx, cancel := context.WithDeadline(context.Background(), d)  // 如果是Timeout，就只直接传上面Add里的部分
	defer cancel()

	select {
	case <- time.After(time.Millisecond * time.Duration(n)):  // 第一个参数小于50，进入这个分支。参数不是数字就当做0
		fmt.Println("时间到了")
	case <- ctx.Done():
		fmt.Println(ctx.Err())
	}
}